package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.saas.domain.entity.CallCenterStatementEntity;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author youli.chen
 * @version v1.0
 * @description: 话务中心坐席策略对账单表服务层
 * @date 2019/2/27 19:59
 * @since v1.0
 */
public interface CallCenterStatementModel extends IModel<CallCenterStatementEntity> {

    /**
     * 批量新增话务中心坐席策略
     *
     * @param callCenterStatementEntity 话务中心坐席策略列表
     */
    void insertBatch(List<CallCenterStatementEntity> callCenterStatementEntity);

    /**
     * 根据ID删除话务中心坐席策略
     *
     * @param key    主键
     * @param corpid 公司id
     * @return 指定ID
     */
    Integer deleteByKey(Long key, String corpid);

    /**
     * 根据ID获取话务中心坐席策略
     *
     * @param key    主键
     * @param corpid 公司id
     * @return 指定ID
     */
    CallCenterStatementEntity getByKey(Long key, String corpid);

    /**
     * 对账并得到余额
     *
     * @param corpid     公司ID
     * @param moduleType 微应用类型
     * @return
     */
    BigDecimal checkBillBalance(String corpid, Integer moduleType);

    /**
     * 统计该公司当月已缴费的坐席总数
     *
     * @param corpid       公司ID
     * @param moduleType   微应用类型
     * @param startAddTime 新增开始时间
     * @param endAddTime   新增结束时间
     * @return
     */
    Integer totalPaidAgentNum(String corpid, Integer moduleType, Integer startAddTime, Integer endAddTime);

    /**
     * 获取制定时间的账单
     *
     * @param corpid       公司ID
     * @param moduleType   微应用类型
     * @param type         对账单类型，参考CallCenterConstant
     * @param startAddTime 新增开始时间
     * @param endAddTime   新增结束时间
     * @return
     */
    BigDecimal checkRangeAmount(String corpid, Integer moduleType, Integer type, Integer startAddTime, Integer endAddTime);
}
